﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Website.Logger;
using DAL;
using UtilityExtensions;
using BOL.UI;
//using BOL;
using WebLib;
using System.Web.Script.Services;
using System.Web.Services;

namespace UILGestion.VentaAdmin.UI
{
    public partial class UIEditForm : System.Web.UI.Page
    {

        public UIEditForm()
        {
            bol = new UIBL();
            _db = new dbGestionDataContext(Parametros.strConnString);
        }
        private UIBL bol;
        private dbGestionDataContext _db;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                     type.Value = (string)Request.QueryString["type"];
                     internalID.Value = (string)Request.QueryString["id"];

                     idProyecto.Value = (string)Request.QueryString["idProyecto"];
                     paginaAnt.Value = Page.Request.UrlReferrer.AbsoluteUri;
                     menuCtrl1.loadMenuVenta(idProyecto.Value.ToInt());
                     FormatForm();

                }
                catch (SqlException sqlex)
                {
                    WebServerSideSqlError.Log(sqlex);

                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


                }
                catch (Exception ex)
                {
                    WebServerSideError.Log(ex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

                }

            }
        }


        private void Insert()
        {

            //dependiendo del tipo de Unidad Inmoviliaria

            int tipoUI = idtipoUIDDL.SelectedValue.ToInt();

            if (tipoUI == 1)
            {
                //departamento
                internalID.Value = bol.AddUIDepartamento(_db, idEtapaDDL.SelectedValue.ToInt(),
                                                            codigoTXT.Text,
                                                            descripcionTXT.Text,
                                                            localizacionDDL.SelectedValue.ToInt(),                    
                                                            tipoAtributoDDL.SelectedValue.ToInt(),
                                                            plazoMaxEntregaTXT.Text.ToInt(),                    
                                                            tipoBloqueDDL.SelectedValue.ToInt(),
                                                            tipoModeloDDL.SelectedValue.ToInt(),                    
                                                            fechaFinTXT.Text.ToDate().Value,
                                                            comentarioTXT.Text,
                                                            bitActivoCHK.Checked,
                                                            direccionTXT.Text, 
                                                            referenciaTXT.Text, 
                                                            
                                                            areaTerrenoTXT.Text.ToDecimal().Value,                    
                                                            areaTechadaTXT.Text.ToDecimal().Value,
                                                            areOcupadaTXT.Text.ToDecimal().Value,                   
                                                            numPartidaTXT.Text,
                                                            short.Parse(numDormitorioTXT.Text),
                                                            short.Parse(numBanioTXT.Text),
                                                            monedaDDL.SelectedValue.ToInt(),                    
                                                            precioTXT.Text.ToDecimal().Value,
                                                            
                                                            separacionTXT.Text.ToDecimal().Value,
                                                            urbanizacionTXT.Text,
                                                            fondoTXT.Text,
                                                            frenteTXT.Text,
                                                            derechoTXT.Text,
                                                            izquierdoTXT.Text,
                                                            cordenadaTXT.Text).ToString();
                                                           

            }
            if (tipoUI == 2)
            {
                //deposito
                internalID.Value = bol.AddUIDeposito(_db, idEtapaDDL.SelectedValue.ToInt(),
                                                        codigoTXT.Text,
                                                        descripcionTXT.Text,
                                                        localizacionDDL.SelectedValue.ToInt(),
                                                        tipoAtributoDDL.SelectedValue.ToInt(),
                                                        plazoMaxEntregaTXT.Text.ToInt(),
                                                        tipoBloqueDDL.SelectedValue.ToInt(),
                                                        tipoModeloDDL.SelectedValue.ToInt(),
                                                        fechaFinTXT.Text.ToDate().Value,
                                                        comentarioTXT.Text,
                                                        bitActivoCHK.Checked, direccionTXT.Text, referenciaTXT.Text,
                                                        areaTerrenoTXT.Text.ToDecimal().Value,
                                                        areaTechadaTXT.Text.ToDecimal().Value,
                                                        areOcupadaTXT.Text.ToDecimal().Value,
                                                        numPartidaTXT.Text,
                                                        monedaDDL.SelectedValue.ToInt(),
                                                        precioTXT.Text.ToDecimal().Value,
                                                      
                                                        separacionTXT.Text.ToDecimal().Value,
                                                        urbanizacionTXT.Text,
                                                        fondoTXT.Text,
                                                        frenteTXT.Text,
                                                        derechoTXT.Text,
                                                        izquierdoTXT.Text,
                                                        cordenadaTXT.Text).ToString();


            }

            if (tipoUI == 3)
            {
                //Estacionamiento
                internalID.Value = bol.AddUIEstacionamiento(_db, idEtapaDDL.SelectedValue.ToInt(),
                                                        codigoTXT.Text,
                                                         descripcionTXT.Text,
                                                        localizacionDDL.SelectedValue.ToInt(),
                                                        tipoAtributoDDL.SelectedValue.ToInt(),
                                                        plazoMaxEntregaTXT.Text.ToInt(),
                                                        tipoBloqueDDL.SelectedValue.ToInt(),
                                                        tipoModeloDDL.SelectedValue.ToInt(),
                                                        fechaFinTXT.Text.ToDate().Value,
                                                        comentarioTXT.Text,
                                                        bitActivoCHK.Checked, direccionTXT.Text,
                                                        referenciaTXT.Text, 
                                                       
                                                       
                                                        areaTerrenoTXT.Text.ToDecimal().Value,
                                                        areaTechadaTXT.Text.ToDecimal().Value,
                                                        areOcupadaTXT.Text.ToDecimal().Value,
                                                        numPartidaTXT.Text,
                                                        monedaDDL.SelectedValue.ToInt(),
                                                        precioTXT.Text.ToDecimal().Value,
                                                       
                                                        separacionTXT.Text.ToDecimal().Value,
                                                        urbanizacionTXT.Text,
                                                        fondoTXT.Text,
                                                        frenteTXT.Text,
                                                        derechoTXT.Text,
                                                        izquierdoTXT.Text,cordenadaTXT.Text).ToString();


            }
            if (tipoUI == 4)
            {
                //Lote
                internalID.Value = bol.AddUILote(_db, idEtapaDDL.SelectedValue.ToInt(),
                                                        codigoTXT.Text,
                                                         descripcionTXT.Text,
                                                        localizacionDDL.SelectedValue.ToInt(),
                                                        tipoAtributoDDL.SelectedValue.ToInt(),
                                                        plazoMaxEntregaTXT.Text.ToInt(),
                                                        tipoBloqueDDL.SelectedValue.ToInt(),
                                                        tipoModeloDDL.SelectedValue.ToInt(),
                                                        fechaFinTXT.Text.ToDate().Value,
                                                        comentarioTXT.Text,
                                                        bitActivoCHK.Checked, direccionTXT.Text,
                                                        referenciaTXT.Text, 
                                                       
                                                       
                                                        areaTerrenoTXT.Text.ToDecimal().Value,
                                                        areaTechadaTXT.Text.ToDecimal().Value,
                                                        areOcupadaTXT.Text.ToDecimal().Value,
                                                        numPartidaTXT.Text,
                                                        
                                                        monedaDDL.SelectedValue.ToInt(),
                                                        precioTXT.Text.ToDecimal().Value,
                                                       
                                                        separacionTXT.Text.ToDecimal().Value,
                                                        urbanizacionTXT.Text,
                                                        fondoTXT.Text,
                                                        frenteTXT.Text,
                                                        derechoTXT.Text,
                                                        izquierdoTXT.Text,
                                                        
                                                        dormitorio1TXT.Text.ToDecimal().Value,
                                                        dormitorio2TXT.Text.ToDecimal().Value,
                                                        dormitorio3TXT.Text.ToDecimal().Value,
                                                        dormitorio4TXT.Text.ToDecimal().Value,
                                                        banio1TXT.Text.ToDecimal().Value,
                                                        banio2TXT.Text.ToDecimal().Value,
                                                        banio3TXT.Text.ToDecimal().Value,
                                                        comedorTXT.Text.ToDecimal().Value,
                                                        salaTXT.Text.ToDecimal().Value,
                                                        salaComedorCicinaTXT.Text.ToDecimal().Value,
                                                        salaComedorTXT.Text.ToDecimal().Value,
                                                        cocinaTXT.Text.ToDecimal().Value,
                                                        patioTXT.Text.ToDecimal().Value,
                                                        labanderiaTXT.Text.ToDecimal().Value,
                                                        patioLabanderiaTXT.Text.ToDecimal().Value,
                                                        zonaComunTXT.Text.ToDecimal().Value,
                                                        cordenadaTXT.Text,
                                                        short.Parse(numPisoTXT.Text)).ToString();


            }
            if (tipoUI == 5)
            {
                //Casa
                internalID.Value = bol.AddUICasa(_db, idEtapaDDL.SelectedValue.ToInt(),
                                                        codigoTXT.Text,
                                                          descripcionTXT.Text,
                                                        localizacionDDL.SelectedValue.ToInt(),
                                                        tipoAtributoDDL.SelectedValue.ToInt(),
                                                        plazoMaxEntregaTXT.Text.ToInt(),
                                                        tipoBloqueDDL.SelectedValue.ToInt(),
                                                        tipoModeloDDL.SelectedValue.ToInt(),
                                                        fechaFinTXT.Text.ToDate().Value,
                                                        comentarioTXT.Text,
                                                        bitActivoCHK.Checked, direccionTXT.Text,
                                                        referenciaTXT.Text, 
                                                       
                                                       
                                                        areaTerrenoTXT.Text.ToDecimal().Value,
                                                        areaTechadaTXT.Text.ToDecimal().Value,
                                                        areOcupadaTXT.Text.ToDecimal().Value,
                                                        numPartidaTXT.Text,
                                                        short.Parse(numDormitorioTXT.Text),
                                                        short.Parse(numBanioTXT.Text),
                                                        monedaDDL.SelectedValue.ToInt(),
                                                        precioTXT.Text.ToDecimal().Value,
                                                       
                                                        separacionTXT.Text.ToDecimal().Value,
                                                        urbanizacionTXT.Text,
                                                        fondoTXT.Text,
                                                        frenteTXT.Text,
                                                        derechoTXT.Text,
                                                        izquierdoTXT.Text,
                                                        short.Parse(numPisoTXT.Text),
                                                        dormitorio1TXT.Text.ToDecimal().Value,
                                                        dormitorio2TXT.Text.ToDecimal().Value,
                                                        dormitorio3TXT.Text.ToDecimal().Value,
                                                        dormitorio4TXT.Text.ToDecimal().Value,
                                                        banio1TXT.Text.ToDecimal().Value,
                                                        banio2TXT.Text.ToDecimal().Value,
                                                        banio3TXT.Text.ToDecimal().Value,
                                                        comedorTXT.Text.ToDecimal().Value,
                                                        salaTXT.Text.ToDecimal().Value,
                                                        salaComedorCicinaTXT.Text.ToDecimal().Value,
                                                        salaComedorTXT.Text.ToDecimal().Value,
                                                        cocinaTXT.Text.ToDecimal().Value,
                                                        patioTXT.Text.ToDecimal().Value,
                                                        labanderiaTXT.Text.ToDecimal().Value,
                                                        patioLabanderiaTXT.Text.ToDecimal().Value,
                                                        zonaComunTXT.Text.ToDecimal().Value,
                                                        cordenadaTXT.Text
                                                        ).ToString();


            }
            if (tipoUI == 6)
            {
                //Oficina
                internalID.Value = bol.AddUIOficina(_db, idEtapaDDL.SelectedValue.ToInt(),
                                                        codigoTXT.Text,
                                                        descripcionTXT.Text,
                                                        localizacionDDL.SelectedValue.ToInt(),
                                                        tipoAtributoDDL.SelectedValue.ToInt(),
                                                        plazoMaxEntregaTXT.Text.ToInt(),
                                                        tipoBloqueDDL.SelectedValue.ToInt(),
                                                        tipoModeloDDL.SelectedValue.ToInt(),
                                                        fechaFinTXT.Text.ToDate().Value,
                                                        comentarioTXT.Text,
                                                        bitActivoCHK.Checked, direccionTXT.Text,
                                                        referenciaTXT.Text, 
                                                       
                                                       
                                                        areaTerrenoTXT.Text.ToDecimal().Value,
                                                        areaTechadaTXT.Text.ToDecimal().Value,
                                                        areOcupadaTXT.Text.ToDecimal().Value,
                                                        numPartidaTXT.Text,
                                                        short.Parse(numDormitorioTXT.Text),
                                                        short.Parse(numBanioTXT.Text),
                                                        monedaDDL.SelectedValue.ToInt(),
                                                        precioTXT.Text.ToDecimal().Value,
                                                        separacionTXT.Text.ToDecimal().Value,
                                                        urbanizacionTXT.Text,
                                                        fondoTXT.Text,
                                                        frenteTXT.Text,
                                                        derechoTXT.Text,
                                                        izquierdoTXT.Text,
                                                        cordenadaTXT.Text).ToString();


            }
            if (tipoUI == 7)
            {
                //tienda
                internalID.Value = bol.AddUITienda(_db,idEtapaDDL.SelectedValue.ToInt(),
                                                        codigoTXT.Text,
                                                        descripcionTXT.Text,
                                                        localizacionDDL.SelectedValue.ToInt(),
                                                        tipoAtributoDDL.SelectedValue.ToInt(),
                                                        plazoMaxEntregaTXT.Text.ToInt(),
                                                        tipoBloqueDDL.SelectedValue.ToInt(),
                                                        tipoModeloDDL.SelectedValue.ToInt(),
                                                        fechaFinTXT.Text.ToDate().Value,
                                                        comentarioTXT.Text,
                                                        bitActivoCHK.Checked, direccionTXT.Text,
                                                        referenciaTXT.Text, 
                                                       
                                                       
                                                        areaTerrenoTXT.Text.ToDecimal().Value,
                                                        areaTechadaTXT.Text.ToDecimal().Value,
                                                        areOcupadaTXT.Text.ToDecimal().Value,
                                                        numPartidaTXT.Text,
                                                        short.Parse(numDormitorioTXT.Text),
                                                        short.Parse(numBanioTXT.Text),
                                                        monedaDDL.SelectedValue.ToInt(),
                                                        precioTXT.Text.ToDecimal().Value,
                                                       
                                                        separacionTXT.Text.ToDecimal().Value,
                                                        urbanizacionTXT.Text,
                                                        fondoTXT.Text,
                                                        frenteTXT.Text,
                                                        derechoTXT.Text,
                                                        izquierdoTXT.Text,
                                                        cordenadaTXT.Text).ToString();


            }
            
       }

        private void Update()
        {

             int tipoUI = idtipoUIDDL.SelectedValue.ToInt();

             if (tipoUI == 1)
             {
                 bol.UpdateUIDepartamento(_db, internalID.Value.ToInt(),
                                             codigoTXT.Text,
                                             descripcionTXT.Text,
                                             localizacionDDL.SelectedValue.ToInt(),
                                             tipoAtributoDDL.SelectedValue.ToInt(),
                                             plazoMaxEntregaTXT.Text.ToInt(),
                                            tipoBloqueDDL.SelectedValue.ToInt(),
                                                                 tipoModeloDDL.SelectedValue.ToInt(),
                                                                 fechaFinTXT.Text.ToDate().Value,
                                                                 comentarioTXT.Text,
                                                                 bitActivoCHK.Checked, direccionTXT.Text,
                                                                 referenciaTXT.Text,
                                                                
                                                                 
                                                                 areaTerrenoTXT.Text.ToDecimal().Value,
                                                                 areaTechadaTXT.Text.ToDecimal().Value,
                                                                 areOcupadaTXT.Text.ToDecimal().Value,
                                                                 numPartidaTXT.Text,
                                                                 short.Parse(numDormitorioTXT.Text),
                                                                 short.Parse(numBanioTXT.Text),
                                                                 monedaDDL.SelectedValue.ToInt(),
                                                                 precioTXT.Text.ToDecimal().Value,
                                                                
                                                                 separacionTXT.Text.ToDecimal().Value,
                                                                 urbanizacionTXT.Text,
                                                                 fondoTXT.Text,
                                                                frenteTXT.Text,
                                                                derechoTXT.Text,
                                                                izquierdoTXT.Text,cordenadaTXT.Text);

             }


             if (tipoUI == 2)
             {
                 bol.UpdateUIDeposito(_db, internalID.Value.ToInt(),
                          codigoTXT.Text,
                           descripcionTXT.Text,
                          localizacionDDL.SelectedValue.ToInt(),
                          tipoAtributoDDL.SelectedValue.ToInt(),
                          plazoMaxEntregaTXT.Text.ToInt(),
                         tipoBloqueDDL.SelectedValue.ToInt(),
                                              tipoModeloDDL.SelectedValue.ToInt(),
                                              fechaFinTXT.Text.ToDate().Value,
                                              comentarioTXT.Text,
                                              bitActivoCHK.Checked, direccionTXT.Text, referenciaTXT.Text,
                                             
                                             
                                              areaTerrenoTXT.Text.ToDecimal().Value,
                                              areaTechadaTXT.Text.ToDecimal().Value,
                                              areOcupadaTXT.Text.ToDecimal().Value,
                                              numPartidaTXT.Text,
                                              monedaDDL.SelectedValue.ToInt(),
                                              precioTXT.Text.ToDecimal().Value,
                                            
                                              separacionTXT.Text.ToDecimal().Value,
                                              urbanizacionTXT.Text,
                                              fondoTXT.Text,
                                             frenteTXT.Text,
                                             derechoTXT.Text,
                                             izquierdoTXT.Text,cordenadaTXT.Text);

             }
             if (tipoUI == 3)
             {
                 bol.UpdateUIEstacionamiento(_db, internalID.Value.ToInt(),
                          codigoTXT.Text,
                           descripcionTXT.Text,
                          localizacionDDL.SelectedValue.ToInt(),
                          tipoAtributoDDL.SelectedValue.ToInt(),
                          plazoMaxEntregaTXT.Text.ToInt(),
                         tipoBloqueDDL.SelectedValue.ToInt(),
                                              tipoModeloDDL.SelectedValue.ToInt(),
                                              fechaFinTXT.Text.ToDate().Value,
                                              comentarioTXT.Text,
                                              bitActivoCHK.Checked, direccionTXT.Text, referenciaTXT.Text,
                                             
                                              areaTerrenoTXT.Text.ToDecimal().Value,
                                              areaTechadaTXT.Text.ToDecimal().Value,
                                              areOcupadaTXT.Text.ToDecimal().Value,
                                              numPartidaTXT.Text,
                                              monedaDDL.SelectedValue.ToInt(),
                                              precioTXT.Text.ToDecimal().Value,
                                              
                                              separacionTXT.Text.ToDecimal().Value,
                                              urbanizacionTXT.Text,
                                              fondoTXT.Text,
                                             frenteTXT.Text,
                                             derechoTXT.Text,
                                             izquierdoTXT.Text,cordenadaTXT.Text);

             }



            if (tipoUI == 4)
            {
                //Lote
                internalID.Value = bol.UpdateUILote(_db, internalID.Value.ToInt(),
                                                        codigoTXT.Text,
                                                         descripcionTXT.Text,
                                                        localizacionDDL.SelectedValue.ToInt(),
                                                        tipoAtributoDDL.SelectedValue.ToInt(),
                                                        plazoMaxEntregaTXT.Text.ToInt(),
                                                        tipoBloqueDDL.SelectedValue.ToInt(),
                                                        tipoModeloDDL.SelectedValue.ToInt(),
                                                        fechaFinTXT.Text.ToDate().Value,
                                                        comentarioTXT.Text,
                                                        bitActivoCHK.Checked, direccionTXT.Text,
                                                        referenciaTXT.Text, 
                                                        
                                                       
                                                        areaTerrenoTXT.Text.ToDecimal().Value,
                                                        areaTechadaTXT.Text.ToDecimal().Value,
                                                        areOcupadaTXT.Text.ToDecimal().Value,
                                                        numPartidaTXT.Text,
                                                        monedaDDL.SelectedValue.ToInt(),
                                                        precioTXT.Text.ToDecimal().Value,
                                                        separacionTXT.Text.ToDecimal().Value,
                                                        urbanizacionTXT.Text,
                                                        fondoTXT.Text,
                                                        frenteTXT.Text,
                                                        derechoTXT.Text,
                                                        izquierdoTXT.Text,
                                                        short.Parse(numPisoTXT.Text),
                                                        dormitorio1TXT.Text.ToDecimal().Value,
                                                        dormitorio2TXT.Text.ToDecimal().Value,
                                                        dormitorio3TXT.Text.ToDecimal().Value,
                                                        dormitorio4TXT.Text.ToDecimal().Value,
                                                        banio1TXT.Text.ToDecimal().Value,
                                                        banio2TXT.Text.ToDecimal().Value,
                                                        banio3TXT.Text.ToDecimal().Value,
                                                        comedorTXT.Text.ToDecimal().Value,
                                                        salaTXT.Text.ToDecimal().Value,
                                                        salaComedorCicinaTXT.Text.ToDecimal().Value,
                                                        salaComedorTXT.Text.ToDecimal().Value,
                                                        cocinaTXT.Text.ToDecimal().Value,
                                                        patioTXT.Text.ToDecimal().Value,
                                                        labanderiaTXT.Text.ToDecimal().Value,
                                                        patioLabanderiaTXT.Text.ToDecimal().Value,
                                                        zonaComunTXT.Text.ToDecimal().Value,
                                                        cordenadaTXT.Text
                                                        ).ToString();


            }




            if (tipoUI == 5)
            {
                //Lote
                internalID.Value = bol.UpdateUICasa(_db, internalID.Value.ToInt(),
                                                        codigoTXT.Text,
                                                          descripcionTXT.Text,
                                                        localizacionDDL.SelectedValue.ToInt(),
                                                        tipoAtributoDDL.SelectedValue.ToInt(),
                                                        plazoMaxEntregaTXT.Text.ToInt(),
                                                        tipoBloqueDDL.SelectedValue.ToInt(),
                                                        tipoModeloDDL.SelectedValue.ToInt(),
                                                        fechaFinTXT.Text.ToDate().Value,
                                                        comentarioTXT.Text,
                                                        bitActivoCHK.Checked, direccionTXT.Text, referenciaTXT.Text,
                                                        
                                                      
                                                        areaTerrenoTXT.Text.ToDecimal().Value,
                                                        areaTechadaTXT.Text.ToDecimal().Value,
                                                        areOcupadaTXT.Text.ToDecimal().Value,
                                                        numPartidaTXT.Text,
                                                        short.Parse(numDormitorioTXT.Text),
                                                        short.Parse(numBanioTXT.Text),
                                                        monedaDDL.SelectedValue.ToInt(),
                                                        precioTXT.Text.ToDecimal().Value,
                                                       
                                                        separacionTXT.Text.ToDecimal().Value,
                                                        urbanizacionTXT.Text,
                                                        fondoTXT.Text,
                                                        frenteTXT.Text,
                                                        derechoTXT.Text,
                                                        izquierdoTXT.Text,
                                                        short.Parse(numPisoTXT.Text),
                                                        dormitorio1TXT.Text.ToDecimal().Value,
                                                        dormitorio2TXT.Text.ToDecimal().Value,
                                                        dormitorio3TXT.Text.ToDecimal().Value,
                                                        dormitorio4TXT.Text.ToDecimal().Value,
                                                        banio1TXT.Text.ToDecimal().Value,
                                                        banio2TXT.Text.ToDecimal().Value,
                                                        banio3TXT.Text.ToDecimal().Value,
                                                        comedorTXT.Text.ToDecimal().Value,
                                                        salaTXT.Text.ToDecimal().Value,
                                                        salaComedorCicinaTXT.Text.ToDecimal().Value,
                                                        salaComedorTXT.Text.ToDecimal().Value,
                                                        cocinaTXT.Text.ToDecimal().Value,
                                                        patioTXT.Text.ToDecimal().Value,
                                                        labanderiaTXT.Text.ToDecimal().Value,
                                                        patioLabanderiaTXT.Text.ToDecimal().Value,
                                                        zonaComunTXT.Text.ToDecimal().Value,
                                                        cordenadaTXT.Text
                                                        ).ToString();


            }

            if (tipoUI == 6)
            {
                bol.UpdateUIOficina(_db, internalID.Value.ToInt(),
                         codigoTXT.Text,
                           descripcionTXT.Text,
                         localizacionDDL.SelectedValue.ToInt(),
                         tipoAtributoDDL.SelectedValue.ToInt(),
                         plazoMaxEntregaTXT.Text.ToInt(),
                        tipoBloqueDDL.SelectedValue.ToInt(),
                                             tipoModeloDDL.SelectedValue.ToInt(),
                                             fechaFinTXT.Text.ToDate().Value,
                                             comentarioTXT.Text,
                                             bitActivoCHK.Checked, direccionTXT.Text, referenciaTXT.Text,
                                            
                                             
                                             areaTerrenoTXT.Text.ToDecimal().Value,
                                             areaTechadaTXT.Text.ToDecimal().Value,
                                             areOcupadaTXT.Text.ToDecimal().Value,
                                             numPartidaTXT.Text,
                                             short.Parse(numDormitorioTXT.Text),
                                             short.Parse(numBanioTXT.Text),
                                             monedaDDL.SelectedValue.ToInt(),
                                             precioTXT.Text.ToDecimal().Value,
                                             
                                             separacionTXT.Text.ToDecimal().Value,
                                             urbanizacionTXT.Text,
                                             fondoTXT.Text,
                                            frenteTXT.Text,
                                            derechoTXT.Text,
                                            izquierdoTXT.Text,
                                            cordenadaTXT.Text);

            }

            if (tipoUI == 7)
            {
                bol.UpdateUITienda(_db,internalID.Value.ToInt(),
                         codigoTXT.Text,
                              descripcionTXT.Text,
                         localizacionDDL.SelectedValue.ToInt(),
                         tipoAtributoDDL.SelectedValue.ToInt(),
                         plazoMaxEntregaTXT.Text.ToInt(),
                        tipoBloqueDDL.SelectedValue.ToInt(),
                                             tipoModeloDDL.SelectedValue.ToInt(),
                                             fechaFinTXT.Text.ToDate().Value,
                                             comentarioTXT.Text,
                                             bitActivoCHK.Checked, direccionTXT.Text, referenciaTXT.Text, 
                                            
                                           
                                             areaTerrenoTXT.Text.ToDecimal().Value,
                                             areaTechadaTXT.Text.ToDecimal().Value,
                                             areOcupadaTXT.Text.ToDecimal().Value,
                                             numPartidaTXT.Text,
                                             short.Parse(numDormitorioTXT.Text),
                                             short.Parse(numBanioTXT.Text),
                                             monedaDDL.SelectedValue.ToInt(),
                                             precioTXT.Text.ToDecimal().Value,
                                            
                                             separacionTXT.Text.ToDecimal().Value,
                                             urbanizacionTXT.Text,
                                             fondoTXT.Text,
                                            frenteTXT.Text,
                                            derechoTXT.Text,
                                            izquierdoTXT.Text,
                                            cordenadaTXT.Text);

            }
        }

        protected void button(object sender, EventArgs e)
        {
            
            try
            {

                if ((sender as Button).ID ==saveBTN.ID)
                {

                    if (type.Value == "E")   { Update(); }
                    if (type.Value == "A")    {Insert(); }
                   
                    Response.Redirect("~/VentaAdmin/UI/UIReadForm.aspx?id={0}&idProyecto={1}".Fmt(internalID.Value,idProyecto.Value), true);
                   
                }
                if ((sender as Button).ID == cancelarBTN.ID)
                {

                    Response.Redirect(paginaAnt.Value, true);
                }
                if ((sender as Button).ID ==refreshBTN.ID)
                {
                    FormatForm();
                }


            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }




        }
        private void ShowAllComboBox()
        {


            idtipoUIDDL.DataValueField = "idInternal";
            idtipoUIDDL.DataTextField = "descripcion";
            //carga provincia y distrito
            idtipoUIDDL.DataSource = DbUtil.Db.UITipos;
            idtipoUIDDL.DataBind();

            //financimientoDDL.DataValueField = "idInternal";
            //financimientoDDL.DataTextField = "descripcion";
            //financimientoDDL.DataSource = new BOL.ListValueBL().GetFinanciamientoVenta();
            //financimientoDDL.DataBind();

            tipoAtributoDDL.DataValueField = "idInternal";
            tipoAtributoDDL.DataTextField = "descripcion";
            tipoAtributoDDL.DataSource = new BOL.ListValueBL().GetAtributoUI();
            tipoAtributoDDL.DataBind();
            //modificar en la DB este tipo de proyecto lo define la etapa,
            //var etapa = DbUtil.Db.Etapas.Single(p => p.idInternal=).Proyecto.idProyectoTipo;
            localizacionDDL.DataValueField = "idInternal";
            localizacionDDL.DataTextField = "descripcion";
          

            tipoBloqueDDL.DataValueField = "idInternal";
            tipoBloqueDDL.DataTextField = "descripcion";
          

            tipoModeloDDL.DataValueField = "idInternal";
            tipoModeloDDL.DataTextField = "descripcion";


            //programaDDL.DataValueField = "idInternal";
            //programaDDL.DataTextField = "descripcion";
            //programaDDL.DataSource = new BOL.ListValueBL().GetProgramaUI();
            //programaDDL.DataBind();

            

            monedaDDL.DataValueField = "idInternal";
            monedaDDL.DataTextField = "descripcion";
            monedaDDL.DataSource = new BOL.ListValueBL().GetMoneda();
            monedaDDL.DataBind();


            idEtapaDDL.DataValueField = "idInternal";
            idEtapaDDL.DataTextField = "descripcion";
            idEtapaDDL.DataSource = new BOL.ListValueBL().GetEtapaVentaXProyecto(idProyecto.Value.ToInt());
            idEtapaDDL.DataBind();

                    



            
            tipoModeloDDL.DataSource = new BOL.ListValueBL().GetModeloUI(idProyecto.Value.ToInt());
            tipoModeloDDL.DataBind();

           
          
                    if (type.Value == "A")
                    {
                        mostrarLocalizacion(idEtapaDDL.SelectedValue.ToInt());

                        
                        mostrarTipoBloque();
                      
                        mostrarConstruccion();
                        mostrarPrograma();

                    }
                    
                    
            


        }

        private void mostrarLocalizacion(int idetapa)
        {
            localizacionDDL.DataSource = DbUtil.Db.UILocalizacions.Where(p => p.idEtapa == idetapa);
            localizacionDDL.DataBind();
            localizacionIPNL.Update();

            Etapa etapa = DbUtil.Db.Etapas.Single(p => p.idInternal == idetapa);
            direccionTXT.Text=etapa.Proyecto.direccion;
            referenciaTXT.Text = etapa.Proyecto.referencia;
            urbanizacionTXT.Text = etapa.Proyecto.urbanizacion;
            plazoMaxEntregaTXT.Text = etapa.plazoEntrega.ToString();
            fechaFinTXT.Text = etapa.fechaFin.ToShortDateString();


        }

        private void mostrarTipoBloque()
        {
            tipoBloqueDDL.DataSource = new BOL.ListValueBL().GetBloquePiso(localizacionDDL.SelectedValue.ToInt());
            tipoBloqueDDL.DataBind();
        }

       

        private void Load()
        {
            DAL.UI ui = DbUtil.Db.UIs.Single(p => p.idInternal == internalID.Value.ToInt());

            codigoTXT.Text = ui.codigo;
            descripcionTXT.Text = ui.descripcion;

            
            fechaFinTXT.Text = ui.fechaFin.ToShortDateString();
            comentarioTXT.Text = ui.comentario;
            bitActivoCHK.Checked = ui.bitActivo;

            direccionTXT.Text = ui.direccion;
            referenciaTXT.Text = ui.referencia;
            
            estadoLBL.Text=ui.EstadoItem.descripcion;
            plazoMaxEntregaTXT.Text=ui.plazoMaxEntrega.ToString();
            fechaFinTXT.Text=ui.fechaFin.ToShortDateString();
            comentarioTXT.Text=ui.comentario;
            bitActivoCHK.Checked=ui.bitActivo;
            urbanizacionTXT.Text=ui.urbanizacion;
            tipoAtributoDDL.SelectedValue = ui.idAtributo.ToString();
            //etapaLBL.Text = ui.Etapa.descripcion;
           

            ////----------------construccion------------------
areaTerrenoTXT.Text=ui.areaTerreno.ToString();
areaTechadaTXT.Text = ui.areaTechada.ToString();
areOcupadaTXT.Text = ui.areaOcupada.ToString();
fondoTXT.Text = ui.fondo.ToString();
frenteTXT.Text = ui.frente.ToString();
derechoTXT.Text = ui.derecha.ToString();
izquierdoTXT.Text = ui.izquierdo.ToString();
numPartidaTXT.Text = ui.numPartida;

numPisoTXT.Text=ui.numPiso.ToString();
dormitorio1TXT.Text=ui.dormitorio1.ToString();
dormitorio2TXT.Text=ui.dormitorio2.ToString();
dormitorio3TXT.Text=ui.dormitorio3.ToString();
dormitorio4TXT.Text=ui.dormitorio4.ToString();
banio1TXT.Text=ui.banio1.ToString();
banio2TXT.Text = ui.banio2.ToString();
banio3TXT.Text = ui.banio3.ToString();
comedorTXT.Text=ui.comedor.ToString();
salaTXT.Text=ui.sala.ToString();
salaComedorCicinaTXT.Text=ui.salaComedorCocina.ToString();
salaComedorTXT.Text=ui.salaComedor.ToString();
cocinaTXT.Text=ui.cocina.ToString();
patioTXT.Text=ui.patio.ToString();
labanderiaTXT.Text=ui.labanderia.ToString();
patioLabanderiaTXT.Text=ui.patioLabanderia.ToString();
zonaComunTXT.Text = ui.zonaComun.ToString();

            //------------------------------ Precio

    precioTXT.Text=ui.precio.ToString();
    separacionTXT.Text = ui.montoSeparacion.ToString();

            //--------------------------------------



idEtapaDDL.SelectedValue = ui.idEtapa.ToString();
idtipoUIDDL.SelectedValue = ui.idTipoUI.ToString();
tipoAtributoDDL.SelectedValue = ui.idTipoModelo.ToString();
localizacionDDL.SelectedValue = ui.idLocalizacion.ToString();
//financimientoDDL.SelectedValue = ui.idFinanciamiento.ToString();
//tipoViviendaD
            //----de acuerdo a la localizacion
mostrarTipoBloque();
            //
tipoModeloDDL.SelectedValue = ui.idTipoModelo.ToString();
numDormitorioTXT.Text = ui.dormitorios.ToString();
numBanioTXT.Text = ui.banio.ToString();
monedaDDL.SelectedValue = ui.idMoneda.ToString();

tipoBloqueDDL.SelectedValue = ui.idTipoBloquePiso.ToString();

cordenadaTXT.Text = ui.mapCordenada;
     mostrarConstruccion();
mostrarPrograma();


            
            //int idProvincia = proyecto.Distrito.IN_ID_PRO;
            //int idDepartamento = proyecto.Distrito.Provincia.IN_ID_CIU;


            ////para la carga del ubigeo
            //provinciaDDL.DataSource = DbUtil.Db.Provincias.Where(p => p.IN_ID_CIU == idDepartamento);
            //provinciaDDL.DataBind();

            //departamentoDDL.DataSource = DbUtil.Db.Ciudades;
            //departamentoDDL.DataBind();

            //distritoDDL.DataSource = DbUtil.Db.Distritos.Where(p => p.IN_ID_PRO == idProvincia);
            //distritoDDL.DataBind();


            //distritoDDL.SelectedValue = proyecto.idDistrito.ToString();
            //provinciaDDL.SelectedValue = idProvincia.ToString();
            //departamentoDDL.SelectedValue = idDepartamento.ToString();

            mostrarConstruccion();

            //

            mostrarLocalizacion(idEtapaDDL.SelectedValue.ToInt());
            mostrarTipoBloque();
            direccionTXT.Text = ui.direccion;
            referenciaTXT.Text = ui.referencia;

            
        }


        private void mostrarConstruccion()
        {

            loteconsPNL.Visible=false;
                depaPNL.Visible=false;
            //1: deparatamento segun tabla grupoDatos
            if (idtipoUIDDL.SelectedValue.ToInt()==1)
            {
                loteconsPNL.Visible=false;
                depaPNL.Visible=true;
                ConstruccionUPNL.Update();
            }
            //4: lote
            if (idtipoUIDDL.SelectedValue.ToInt() == 4)
            {
                loteconsPNL.Visible = true;
                depaPNL.Visible = false;
                ConstruccionUPNL.Update();
            }
        }

        private void FormatForm()
        {

            //--------------------
            //int idEmpleadoEmisor = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
            //bool acceso = new DAL.FormularioAcceso().VerificarAcceso(DbUtil.Db,
            //    idEmpleadoEmisor,
            //    11, //Proveeedor
            //    2); //lectura
            ////------------------------- 
            //// los paneles presentes en el formulario
            //pnlMain.Visible = true;
            ShowAllComboBox();
            //fechaInicioTXT.Text = DateTime.Now.ToShortDateString();
           


            if (type.Value == "E")
            {
                Load();
                
            }
            if (type.Value == "A")
            {
                
                precioTXT.Text = "0";
                separacionTXT.Text = "0";

                //datos de la construccion

                areaTerrenoTXT.Text="0";
                areaTechadaTXT.Text="0";
                areOcupadaTXT.Text="0";
                fondoTXT.Text="0";
                frenteTXT.Text="0";
                derechoTXT.Text="0";
                izquierdoTXT.Text="0";
                fondoTXT.Text="0";
                numPisoTXT.Text="0";
                dormitorio1TXT.Text="0";
                dormitorio2TXT.Text="0";
                dormitorio3TXT.Text="0";
                dormitorio4TXT.Text="0";
                banio1TXT.Text="0";
                banio2TXT.Text="0";
                banio3TXT.Text="0";
                comedorTXT.Text="0";
                salaTXT.Text="0";
                salaComedorCicinaTXT.Text="0";
                salaComedorTXT.Text="0";
                cocinaTXT.Text="0";
                patioTXT.Text="0";
                labanderiaTXT.Text="0";
                patioLabanderiaTXT.Text="0";
                zonaComunTXT.Text = "0";
                
                ////////
                numDormitorioTXT.Text = "0";
                numBanioTXT.Text = "0";
                ////////
               //etapaLBL.Text=etapa.descripcion;
                bitActivoCHK.Checked = true;
                //

               
                Proyecto proyecto = DbUtil.Db.Proyectos.Single(p => p.idInternal == idProyecto.Value.ToInt());

                fechaFinTXT.Text = proyecto.fechaFin.Value.ToShortDateString();
                referenciaTXT.Text = proyecto.referencia;
                direccionTXT.Text = proyecto.direccion;
                // no existe el financiamiento
                //financimientoDDL.SelectedValue=proyecto.idTipoFinanciamiento.ToString() ;
                //programaDDL.SelectedValue=proyecto.idPrograma.ToString();
                //cuotaLBTN.SelectedValue=proyecto.
            }
        
        
           

        }


        private void updatebloques()
        {
            
                tipoBloqueDDL.DataSource = new BOL.ListValueBL().GetBloquePiso(localizacionDDL.SelectedValue.ToInt());
                tipoBloqueDDL.DataBind();
                tipoBloqueUPNL.Update();

        }


        protected void Localizacion(object sender, EventArgs e)
        {

            try
            {
                if (((DropDownList)sender).ID == localizacionDDL.ID)
                {
                    updatebloques();
                    
                    
                            
                }
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }


        }

        private  void mostrarPrograma()
        {
            //if (financimientoDDL.SelectedValue.ToInt() == 52)
            //{
            //    programaPNL.Visible = true;
            //    programaUPNL.Update();
            //}
            //else
            //{
            //    programaPNL.Visible = false;
            //    programaUPNL.Update();
            //}
                
        }
        protected void DDL(object sender, EventArgs e)
        {
            
           try
            {
                if (((DropDownList)sender).ID == idtipoUIDDL.ID)
                {
                    mostrarConstruccion();
                    
                            
                }

                
                if (((DropDownList)sender).ID == idEtapaDDL.ID)
                {
                   // mostrarPrograma();
                    
                    mostrarLocalizacion(idEtapaDDL.SelectedValue.ToInt());
                    updatebloques();

                            
                }
               
               




            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }


        }

      
      

        
       
    }
}